home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib17.dsk / NIBBLE GARAGE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  15KB  |  212 lines

  1. 10  REM  ********4.24.84********
  2. 20  REM  *    NIBBLE GARAGE    *
  3. 30  REM  *  BY  WOODY ADAMSON  *
  4. 40  REM  * COPYRIGHT (C)  1984 *
  5. 50  REM  * BY MICROSPARC, INC. *
  6. 60  REM  * LINCOLN, MA.  01773 *
  7. 70  REM  ***********************
  8. 80  ONERR  GOTO 170
  9. 90 CS$ = "":D$ =  CHR$(4): DIM CK$(50,7): GOSUB 2110
  10. 100  HOME : TEXT : VTAB 2: PRINT "NIBBLE GARAGE FUNCTIONS: 
  11. 110  VTAB 5: HTAB 1: PRINT "1. CREATE SERVICE FILE": PRINT "2. EDIT SERVICE FILE": PRINT "3. GENERATE MAINTENANCE LIST"
  12. 120  PRINT "4. UPDATE DATE/ODOMETER DATA": PRINT "5. EXIT PROGRAM"
  13. 130  VTAB 12: HTAB 1: CALL  -868: PRINT "SELECTION >";: GET A$: PRINT A$:A =  VAL(A$): IF A <1  OR A >5  THEN 130
  14. 140  ON A GOSUB 650,850,230,440,160
  15. 150  GOTO 100
  16. 160  GOSUB 1910: END 
  17. 170  REM ERROR ROUTINE
  18. 180 ER =  PEEK(222):LN =  PEEK(218) +256 * PEEK(219)
  19. 190  IF ER = 6  AND LN = 700  THEN 740
  20. 200  IF ER = 6  AND LN = 2000  THEN  POP : RETURN 
  21. 210  IF ER = 22  THEN 100
  22. 220  POKE 216,0: RESUME 
  23. 230  REM   LIST MAINTENANCE DUE
  24. 240  HOME : VTAB 2: PRINT "MAINTENANCE REMINDER LIST CREATE:"
  25. 250 VT = 5: GOSUB 1960:VT = 7: GOSUB 2010:VT = 11: GOSUB 2080
  26. 260  VTAB 2: HTAB 1: CALL  -958: PRINT  SPC( 5);"MAINTENANCE DUE LIST: ";CF$: PRINT 
  27. 270 X = 0:MO =  VAL(DA$):YR =  VAL( RIGHT$(DA$,2)): PRINT : PRINT  SPC( 5);"DATE: ";DA$; SPC( 5);"ODOMETER: ";OD$: PRINT 
  28. 280  FOR I = 1 TO R0:FL = 0: IF  VAL(CK$(I,4)) >OD  THEN  PRINT D$;"PR#0": PRINT : INVERSE : PRINT "ODOMETER ERROR! SERVICE ITEM #";I: PRINT "PRESENT ODOMETER (";OD;" LESS THAN"
  29. 290  IF  VAL(CK$(I,4)) >OD  THEN  PRINT "LAST ODOMETER READING (";CK$(I,4);")": NORMAL : PRINT : PRINT "LIST TERMINATED!":I = R0: GOTO 430
  30. 300  IF (OD - VAL(CK$(I,4))) =  > VAL(CK$(I,3))  THEN FL = 1
  31. 310 M1 =  VAL(CK$(I,6)):Y1 =  VAL( RIGHT$(CK$(I,6),2))
  32. 320  IF Y1 >YR  THEN  PRINT D$;"PR#0": PRINT : INVERSE : PRINT "YEAR ERROR! SERVICE ITEM #";I: PRINT "PRESENT YEAR (";YR;") LESS THAN": PRINT "LAST UPDATE ("Y1;")": NORMAL : PRINT : PRINT "LIST TERMINATED!":I = R0: GOTO 430
  33. 330  IF Y1 = YR  AND M1 >MO  THEN  PRINT D$;"PR#0": PRINT : INVERSE : PRINT "MONTH ERROR! SERVICE ITEM #";I: PRINT "PRESENT DATE (";DA$;") LESS THAN": PRINT "LAST UPDATE (";CK$(I,6);")": NORMAL : PRINT : PRINT "LIST TERMINATED!":I = R0: GOTO 430
  34. 340 DM = MO -M1:DY = YR -Y1: IF DY >0  THEN DM = DM +(12 *DY)
  35. 350  IF DM =  > VAL(CK$(I,5))  THEN 370
  36. 360  IF FL = 0  THEN 430
  37. 370 X = X +2: IF P$ = "P"  THEN  PRINT  SPC( 5);"CK"; CHR$(95); CHR$(95); CHR$(95);"  ";
  38. 380  IF CK$(I,2) = "C"  THEN  PRINT I;"." SPC( 4 - LEN( STR$(I)));"CHANGE ";
  39. 390  IF CK$(I,2) = "I"  THEN  PRINT I;"."; SPC( 4 - LEN( STR$(I)));"INSPECT/CHECK ";
  40. 400  PRINT CK$(I,1): IF CK$(I,7) < >""  THEN  PRINT  SPC( 12);"NOTE: ";CK$(I,7):X = X +1
  41. 410  IF X =  >14  AND P$ = "V"  THEN X = 0:VT = 22: GOSUB 2050: VTAB 4: HTAB 1: CALL  -958
  42. 420  IF P$ = "V"  THEN  PRINT 
  43. 430  NEXT I: PRINT  CHR$(12): PRINT D$;"PR#0":VT = 22: GOSUB 2050: RETURN 
  44. 440  REM  SERVICE ODOMETER/DATE UPDATE
  45. 450  HOME : VTAB 2: PRINT "SERVICE DATE/ODOMETER UPDATE:"
  46. 460 VT = 5: GOSUB 1960
  47. 470 VT = 7: GOSUB 2010
  48. 480 X = 0:Y = 1: VTAB 5: HTAB 1: CALL  -958
  49. 490  FOR I = 1 TO R0:X = X +1: PRINT I;". ";CK$(I,1)
  50. 500  IF X = 15  THEN  GOSUB 530:Y = Y +15: VTAB 5: HTAB 1: CALL  -958:X = 0
  51. 510  NEXT I: IF X >0  THEN  GOSUB 530
  52. 520  GOSUB 1840: FOR R = 1 TO R0: GOSUB 1930: GOSUB 1870: NEXT R: GOSUB 1910: RETURN 
  53. 530  VTAB 21: HTAB 1: CALL  -958: PRINT "ENTER SERVICED ITEM NO. (";Y;" TO ";Y +X -1;")>";
  54. 540  VTAB 22: HTAB 5: PRINT "<E TO END>": NORMAL : VTAB 21: HTAB 36: CALL  -868: INPUT "";A$:A =  VAL(A$): IF A$ = "E"  THEN  RETURN 
  55. 550  IF A <0  THEN 630
  56. 560  IF A <Y  OR A >Y +X -1  THEN 540
  57. 570 MO =  VAL(DA$):YR =  VAL( RIGHT$(DA$,2)):M1 =  VAL(CK$(A,6)):Y1 =  VAL( RIGHT$(CK$(A,6),2)):OD =  VAL(OD$):O1 =  VAL(CK$(A,4))
  58. 580  IF OD <O1  THEN  VTAB 21: HTAB 1: CALL  -958: PRINT  CHR$(7);: INVERSE : PRINT "ODOMETER ERROR - PRESENT > LAST SERVICE!": NORMAL :VT = 23: GOSUB 2050: GOTO 530
  59. 590  IF YR <Y1  THEN  VTAB 21: HTAB 1: CALL  -958: PRINT  CHR$(7);: INVERSE : PRINT "YEAR ERROR - PRESENT YR < LAST SERVICE!": NORMAL :VT = 23: GOSUB 2050: GOTO 530
  60. 600  IF MO <M1  AND YR = Y1  THEN  VTAB 21: HTAB 1: CALL  -958: INVERSE : PRINT  CHR$(7);"MONTH ERROR - PRESENT < LAST SERVICE!": NORMAL :VT = 23: GOSUB 2050: GOTO 530
  61. 610  VTAB (A -Y +5): HTAB 1: INVERSE : PRINT A;: NORMAL 
  62. 620 CK$(A,4) = OD$:CK$(A,6) = DA$: GOTO 540
  63. 630 B =  ABS(A): IF B <Y  OR B >Y +X +1  THEN 540
  64. 640  VTAB (B -Y +5): HTAB 1: PRINT B:R = B: VTAB 21: HTAB 36: GOSUB 1840: GOSUB 1860:CK$(B,4) = R$(4):CK$(B,6) = R$(6): GOTO 540
  65. 650  REM  CREATE SERVICE FILE
  66. 660  HOME : PRINT "NIBBLE GARAGE FILE INITIALIZATION:"
  67. 670  VTAB 3: HTAB 1: CALL  -958: INPUT "ENTER CAR FILE NAME>";CF$: IF  VAL(CF$) < >0  THEN 670
  68. 680  IF CF$ = ""  THEN  RETURN 
  69. 690  IF CF$ = "CATALOG"  THEN  PRINT D$;"CATALOG":VT = 22: GOSUB 2050: GOTO 660
  70. 700  PRINT D$;"VERIFY";CF$
  71. 710  VTAB 5: HTAB 1: PRINT "FILE ALREADY EXISTS, REPLACE? (Y/N) >";: GET A$: PRINT A$: IF A$ = "N"  THEN 660
  72. 720  IF A$ < >"Y"  THEN 710
  73. 730  GOSUB 1890
  74. 740  GOSUB 1840
  75. 750  GOSUB 1570: VTAB 4: HTAB 1: CALL  -868: PRINT "ENTER SERVICE D)ATA OR E)ND>";: GET A$: PRINT A$: IF A$ = "E"  THEN  GOSUB 1530: RETURN 
  76. 760  IF A$ < >"D"  THEN 750
  77. 770  FOR J = 1 TO 7: ON J GOSUB 1610,1640,1660,1690,1720,1740,1790: NEXT J
  78. 780  GOSUB 1810: GOSUB 1820:CD =  VAL(CD$): IF CD >0  THEN  ON CD GOSUB 1610,1640,1660,1690,1720,1740,1790
  79. 790  IF CD >0  THEN 780
  80. 800  IF CD$ = "R"  THEN R0 = R0 +1:R = R0: GOSUB 1870: GOSUB 1940: GOTO 750
  81. 810  IF CD$ = "C"  THEN 750
  82. 820  IF CD$ = "X"  THEN  VTAB 21: CALL  -958: PRINT "SAVE ABOVE ENTRY? (Y/N) >";: GET A$: PRINT A$: IF A$ = "Y"  THEN R0 = R0 +1:R = R0: GOSUB 1870: GOSUB 1880: RETURN 
  83. 830  IF A$ = "N"  THEN  GOSUB 1880: RETURN 
  84. 840  GOTO 780
  85. 850  REM  SERVICE FILE EDIT
  86. 860  HOME : VTAB 2: PRINT "SERVICE FILE EDIT:"
  87. 870 VT = 4: GOSUB 1960
  88. 880  HOME : VTAB 2: PRINT "SERVICE FILE EDIT MENU:"
  89. 890  VTAB 3: HTAB 1: CALL  -958: PRINT "AUTO SERVICE FILE: ";CF$: VTAB 5: HTAB 1: PRINT "1. CHANGE SERVICE DATA": PRINT "2. ADD SERVICE ITEM": PRINT "3. DELETE SERVICE ITEM": PRINT "4. LIST SERVICE ITEM/DATA"
  90. 900 VT = 10: GOSUB 2060: IF A <1  OR A >4  THEN 900
  91. 910  ON A GOSUB 930,1060,1080,1230
  92. 920  GOTO 880
  93. 930  REM  CHANGE SERVICE ITEM DATA
  94. 940  HOME : VTAB 2: INVERSE : PRINT "SERVICE DATA EDIT:": NORMAL 
  95. 950  VTAB 4: HTAB 1: CALL  -958: VTAB 4: INPUT "ENTER SERVICE ITEM #>";IN$:IN =  VAL(IN$):R = IN: IF IN$ = ""  THEN  RETURN 
  96. 960  IF IN <1  OR IN >R0  THEN 950
  97. 970  GOSUB 1570: GOSUB 1930: VTAB 6: HTAB 18: PRINT SI$: VTAB 8: HTAB 25: PRINT CK$: VTAB 10: HTAB 19: PRINT MI$: VTAB 12: HTAB 32: PRINT OD$: VTAB 14: HTAB 20: PRINT MO$
  98. 980  VTAB 16: HTAB 26: PRINT DA$: VTAB 18: HTAB 17: PRINT SN$: GOSUB 1810
  99. 990  GOSUB 1820:CD =  VAL(CD$): IF CD >0  THEN  ON CD GOSUB 1610,1640,1660,1690,1720,1740,1790
  100. 1000  IF CD >0  THEN 990
  101. 1010  IF CD$ = "R"  THEN R = IN: GOSUB 1840: GOSUB 1870: GOSUB 1910: GOSUB 1940: VTAB 21: HTAB 1: CALL  -958: PRINT "ANOTHER? (Y/N)>";: GET A$: PRINT A$:CD$ = A$: IF A$ = "Y"  THEN 950
  102. 1020  IF CD$ = "C"  THEN  RETURN 
  103. 1030  IF CD$ = "X"  THEN  VTAB 21: HTAB 1: CALL  -958: PRINT "SAVE ABOVE DATA? (Y/N)>";: GET A$: PRINT A$:CD$ = A$: IF A$ = "Y"  THEN CD$ = "R": GOTO 1010
  104. 1040  IF CD$ = "N"  THEN  RETURN 
  105. 1050  GOSUB 1810: GOTO 990
  106. 1060  REM  ADD SERVICE ITEM
  107. 1070  GOSUB 1840: GOTO 750
  108. 1080  REM  DELETE SERVICE ITEM
  109. 1090  HOME : VTAB 2: PRINT "SERVICE ITEM DELETION:"
  110. 1100  VTAB 5: HTAB 1: PRINT "SERVICE FILE: ";CF$
  111. 1110  VTAB 7: HTAB 1: CALL  -958: INPUT "ENTER SERVICE ITEM #>";IN$:IN =  VAL(IN$): IF IN$ = ""  THEN 1210
  112. 1120  IF IN <1  OR IN >R0  THEN 1110
  113. 1130  VTAB 9: HTAB 1: PRINT IN;">";CK$(IN,1)
  114. 1140  VTAB 11: HTAB 1: CALL  -868: PRINT "CONFIRM - DELETE ABOVE SERV ITEM?(Y/N)>";: GET A$: PRINT A$: IF A$ = "N"  THEN 1110
  115. 1150  IF A$ = ""  THEN 1210
  116. 1160  IF A$ < >"Y"  THEN 1140
  117. 1170  IF IN = R0  THEN R0 = R0 -1: GOTO 1190
  118. 1180  FOR I = (IN +1) TO R0: FOR J = 1 TO 7:CK$((I -1),J) = CK$(I,J): NEXT J: NEXT I:R0 = R0 -1
  119. 1190  VTAB 13: HTAB 1: CALL  -868: PRINT "DELETION COMPLETE - ANOTHER? (Y/N)>";: GET A$: PRINT A$: IF A$ = "Y"  THEN 1110
  120. 1200  IF A$ < >"N"  THEN 1190
  121. 1210  GOSUB 1890: GOSUB 1840: GOSUB 1880: GOSUB 1840: FOR R = 1 TO R0: GOSUB 1930
  122. 1220  GOSUB 1870: NEXT R: RETURN 
  123. 1230  REM  LIST SERVICE ITEM/DATA
  124. 1240  VTAB 5: HTAB 1: CALL  -958: PRINT "1. LIST SERVICE ITEM INDEX": PRINT "2. LIST SERVICE ITEM DATA": PRINT "3. LIST SERVICE FILE SUMMARY"
  125. 1250 VT = 10: GOSUB 2060: IF A <1  OR A >3  THEN 1250
  126. 1260  ON A GOTO 1280,1340,1440
  127. 1270  REM  LIST SERVICE ITEM INDEX
  128. 1280 VT = 10: GOSUB 2080
  129. 1290  IF P$ = "P"  THEN  PRINT  SPC( 5);"SERVICE ITEM INDEX:"
  130. 1300  VTAB 5: HTAB 1: CALL  -958:X = 0: FOR I = 1 TO R0: PRINT  SPC( 5);I;". ";CK$(I,1):X = X +1: IF X = 15  AND P$ = "V"  THEN X = 0:VT = 22: GOSUB 2050: VTAB 5: HTAB 1: CALL  -958
  131. 1310  NEXT I: PRINT  CHR$(12): PRINT D$;"PR#0":VT = 22: GOSUB 2050: GOTO 1240
  132. 1320 VT = 22: GOSUB 2050: GOTO 1240
  133. 1330  REM  LIST SERVICE DATA
  134. 1340  VTAB 5: HTAB 1: CALL  -958: INPUT "ENTER SERVICE ITEM # >";N$:N =  VAL(N$): IF N <1  OR N >R0  THEN 1240
  135. 1350 VT = 7: GOSUB 2080: VTAB 5: HTAB 1: CALL  -958: PRINT  SPC( 5);"SERVICE ITEM #";N
  136. 1360  PRINT : PRINT  SPC( 5);"SERVICE ITEM: ";CK$(N,1): IF CK$(N,2) = "C"  THEN  PRINT : PRINT  SPC( 5);"TO BE CHANGED EVERY ";
  137. 1370  IF CK$(N,2) = "I"  THEN  PRINT : PRINT "TO BE INSPECTED EVERY ";
  138. 1380  PRINT CK$(N,3);" MILES,": PRINT  SPC( 5);"OR ";CK$(N,5);" MONTHS. ";
  139. 1390  PRINT "ITEM WAS ";: IF CK$(N,2) = "C"  THEN  PRINT "CHANGED "
  140. 1400  IF CK$(N,2) = "I"  THEN  PRINT "INSPECTED "
  141. 1410  PRINT  SPC( 5);"ON ";CK$(N,6);" AT ODOMETER READING": PRINT  SPC( 5);"OF ";CK$(N,4);" MILES": PRINT : PRINT  SPC( 5);"SERVICE NOTE: ";CK$(N,7): PRINT  CHR$(12): PRINT D$;"PR#0"
  142. 1420 VT = 22: GOSUB 2050: GOTO 1240
  143. 1430  REM  LIST SERVICE FILE SUMMARY
  144. 1440  HOME : VTAB 2: PRINT "SERVICE FILE SUMMARY:":VT = 4: GOSUB 2080: IF P$ = "V"  THEN 1480
  145. 1450  PRINT  SPC( 2);"SERVICE FILE SUMMARY: ";CF$: PRINT : PRINT  SPC( 2);"# / ITEM"; SPC( 14);"C/I"; SPC( 2);"DATE"; SPC( 3);"ODOMETER"; SPC( 2);"MO'S"; SPC( 2);"MILES"; SPC( 2);"SERVICE NOTE": PRINT 
  146. 1460  FOR I = 1 TO R0: PRINT  SPC( 2);I;"-";CK$(I,1);: POKE 36,25: PRINT CK$(I,2); SPC( 3);CK$(I,6); SPC( 4);CK$(I,4);: POKE 36,47: PRINT CK$(I,5);: POKE 36,52
  147. 1470  PRINT CK$(I,3);: POKE 36,59: PRINT CK$(I,7): NEXT I: PRINT  CHR$(12): PRINT D$;"PR#0": GOTO 1520
  148. 1480  HOME :X = 0: FOR I = 1 TO 40: PRINT "*";: NEXT I: FOR I = 1 TO R0: PRINT "SERV ITEM #";I;" - ";CK$(I,1): PRINT "SERV DATE - ";CK$(I,6);" * ODOMETER - ";CK$(I,4): PRINT "SERV MILEAGE - ";CK$(I,3);" * SERV MO'S - ";CK$(I,5)
  149. 1490  PRINT "NOTE:";CK$(I,7);" * STATUS - ";CK$(I,2): FOR J = 1 TO 40: PRINT "*";: NEXT J
  150. 1500 X = X +1: IF X = 4  THEN VT = 22: GOSUB 2050:X = 0: HOME : FOR J = 1 TO 40: PRINT "*";: NEXT J
  151. 1510  NEXT I:VT = 22: GOSUB 2050
  152. 1520  HOME : VTAB 2: PRINT "SERVICE FILE EDIT:": PRINT "AUTO SERVICE FILE: ";CF$: GOTO 1240
  153. 1530  REM  CHECK IF R0=0
  154. 1540  IF R0 >0  THEN  GOSUB 1880: RETURN 
  155. 1550  VTAB 4: HTAB 1: CALL  -958: VTAB 5: PRINT "ERROR! - NO DATA ENTERED IN CAR FILE!"
  156. 1560  PRINT : PRINT "SERVICE FILE ";CF$;" IS BEING DELETED":VT = 22: GOSUB 1890: GOSUB 2050: POP : RETURN 
  157. 1570  REM  SERVICE ITEM SCREEN ROUTINES
  158. 1580  VTAB 2: HTAB 1: CALL  -958: PRINT "AUTO SERVICE FILE: ";CF$: VTAB 6: HTAB 1: PRINT "1. SERVICE ITEM:": VTAB 8: HTAB 1: PRINT "2. C)HANGE OR I)NSPECT:": VTAB 10: HTAB 1: PRINT "3. SERVICE MILES:"
  159. 1590  VTAB 12: HTAB 1: PRINT "4. ODOMETER READING(LAST C/I):": VTAB 14: HTAB 1: PRINT "5. SERVICE MONTHS:": VTAB 16: HTAB 1: PRINT "6. DATE(MO/YR-LAST C/I):"
  160. 1600  VTAB 18: HTAB 1: PRINT "7. SERVICE NOTE:": RETURN 
  161. 1610  VTAB 6: HTAB 18: CALL  -868: FOR I = 1 TO 20: PRINT  CHR$(95);: NEXT I: HTAB 18: INPUT "";SI$: IF SI$ = ""  THEN 1610
  162. 1620  IF  LEN(SI$) >20  THEN 1610
  163. 1630  RETURN 
  164. 1640  VTAB 8: HTAB 25: CALL  -868: GET CK$: PRINT CK$: IF CK$ < >"I"  AND CK$ < >"C"  THEN 1640
  165. 1650  RETURN 
  166. 1660  VTAB 10: HTAB 19: CALL  -868: INPUT "";MI$: IF  LEN(MI$) >5  THEN 1660
  167. 1670  IF  VAL(MI$) <1000  THEN 1660
  168. 1680  RETURN 
  169. 1690  VTAB 12: HTAB 32: CALL  -868: INPUT "";OD$: IF  LEN(OD$) >6  THEN 1690
  170. 1700 OD =  VAL(OD$):OD$ =  STR$(OD): VTAB 12: HTAB 32: CALL  -868: PRINT OD$: IF OD <1  THEN 1690
  171. 1710  RETURN 
  172. 1720  VTAB 14: HTAB 20: CALL  -868: INPUT "";MO$: IF  VAL(MO$) <1  THEN 1720
  173. 1730  RETURN 
  174. 1740  VTAB 16: HTAB 26: CALL  -868: INPUT "";DA$: IF  LEN(DA$) < >5  THEN 1740
  175. 1750  IF  MID$ (DA$,3,1) < >"/"  THEN 1740
  176. 1760 YR =  VAL( RIGHT$(DA$,2)): IF YR <1  THEN 1740
  177. 1770 MO =  VAL( LEFT$(DA$,2)): IF MO <1  OR MO >12  THEN 1740
  178. 1780  RETURN 
  179. 1790  VTAB 18: HTAB 17: CALL  -868: FOR I = 1 TO 20: PRINT  CHR$(95);: NEXT I: HTAB 17: INPUT "";SN$: IF  LEN(SN$) >20  THEN 1790
  180. 1800  RETURN 
  181. 1810  VTAB 21: HTAB 1: PRINT "PRESS 1-7 TO CHANGE, R TO RECORD,": PRINT "C TO CANCEL, OR X TO EXIT >": RETURN 
  182. 1820  VTAB 22: HTAB 28: CALL  -868: GET CD$: PRINT CD$: RETURN 
  183. 1830  REM  DISK ROUTINES
  184. 1840  PRINT D$;"OPEN";CF$;",L87": RETURN 
  185. 1850  PRINT D$;"READ";CF$;",R0": INPUT R0$:R0 =  VAL(R0$): PRINT D$: RETURN 
  186. 1860  PRINT D$;"READ";CF$;",R";R: FOR II = 1 TO 7: INPUT R$(II): NEXT II: PRINT D$: RETURN 
  187. 1870  PRINT D$;"WRITE";CF$;",R";R: PRINT SI$: PRINT CK$: PRINT MI$: PRINT OD$: PRINT MO$: PRINT DA$: PRINT SN$: PRINT D$: RETURN 
  188. 1880  PRINT D$;"WRITE";CF$;",R0": PRINT  STR$(R0): PRINT D$;"CLOSE";CF$: RETURN 
  189. 1890  PRINT D$;"DELETE";CF$: RETURN 
  190. 1900 R0 = 0: GOSUB 1840: GOSUB 1850: FOR R = 1 TO R0: GOSUB 1860: FOR I = 1 TO 7:CK$(R,I) = R$(I): NEXT I: NEXT R: PRINT D$;"CLOSE";CF$: RETURN 
  191. 1910  PRINT D$;"CLOSE";CF$: RETURN 
  192. 1920  REM  DATA ARRAY ROUTINES
  193. 1930 SI$ = CK$(R,1):CK$ = CK$(R,2):MI$ = CK$(R,3):OD$ = CK$(R,4):MO$ = CK$(R,5):DA$ = CK$(R,6):SN$ = CK$(R,7): RETURN 
  194. 1940 CK$(R,1) = SI$:CK$(R,2) = CK$:CK$(R,3) = MI$:CK$(R,4) = OD$:CK$(R,5) = MO$:CK$(R,6) = DA$:CK$(R,7) = SN$: RETURN 
  195. 1950  REM  INPUT ROUTINES
  196. 1960  VTAB VT: HTAB 1: CALL  -868: INPUT "ENTER CAR FILE NAME >";CF$: IF  VAL(CF$) >0  THEN 1960
  197. 1970  IF CF$ = ""  THEN  POP : RETURN 
  198. 1980  IF CF$ = "CATALOG"  THEN  PRINT D$;"CATALOG":V = VT:VT = 22: GOSUB 2050:VT = V: GOTO 1960
  199. 1990  IF CF$ = CS$  THEN  RETURN 
  200. 2000 CS$ = CF$: PRINT D$;"VERIFY";CF$: GOSUB 1900: RETURN 
  201. 2010  VTAB VT: HTAB 1: CALL  -868: INPUT "ENTER SERVICE DATE (MO/YR)>";DA$: IF  LEN(DA$) < >5  OR  VAL(DA$) <1  OR  VAL(DA$) >12  THEN 2010
  202. 2020  IF  VAL( RIGHT$(DA$,2)) <1  THEN 2010
  203. 2030  VTAB VT +2: HTAB 1: CALL  -868: INPUT "ENTER SERVICE ODOMETER READING>";OD$:OD =  VAL(OD$): IF OD <1  THEN 2030
  204. 2040  RETURN 
  205. 2050  VTAB VT: HTAB 6: CALL  -958: PRINT "<PRESS ANY KEY TO CONTINUE>";: GET A$: PRINT : RETURN 
  206. 2060  VTAB VT: HTAB 1: CALL  -868: PRINT "SELECTION >";: GET A$: PRINT A$:A =  VAL(A$): IF A$ =  CHR$(13)  OR A$ =  CHR$(27)  THEN  POP 
  207. 2070  RETURN 
  208. 2080  VTAB VT: HTAB 1: CALL  -868: PRINT "V)IEW OR P)RINT? >";: GET P$: PRINT P$: IF P$ < >"P"  AND P$ < >"V"  THEN 2080
  209. 2090  IF P$ = "P"  THEN  PRINT D$;"PR#1": PRINT  CHR$(9);"80N"
  210. 2100  RETURN 
  211. 2110  REM  TITLE
  212. 2120  TEXT : HOME : VTAB 8: HTAB 13: PRINT "NIBBLE GARAGE": VTAB 10: HTAB 11: PRINT "BY WOODY ADAMSON": VTAB 14: HTAB 11: PRINT "COPYRIGHT 1984 BY": VTAB 16: HTAB 11: PRINT "MICROSPARC,  INC.":VT = 22: GOSUB 2050: RETURN